// 导入获取token的方法
import { getToken } from '@/utils'
// axios的封装处理
import axios from 'axios'
// 任何项目都需要的配置
// 1.根域名的配置
// 2.超时时间
// 3.请求拦截器 响应拦截器

const request = axios.create({
	// 根域名
	baseURL: 'http://geek.itheima.net/v1_0',
	timeout: 5000
})
// 添加请求拦截器
request.interceptors.request.use(
	(config) => {
		// 操作config  注入token数据
		// 获取token
		const token = getToken()
		if (token) {
			// 按照后端的格式要求 注入拼接token  `Bearer ${token}` 空格不能丢失  这块咋写是由后端决定的
			config.headers.Authorization = `Bearer ${token}`
		}
		return config
	},
	(error) => {
		return Promise.reject(error)
	}
)
// 添加响应拦截器
request.interceptors.response.use(
	(response) => {
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		return response.data
	},
	(error) => {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		return Promise.reject(error)
	}
)

// 导出实例对象
export { request }
